取消

源码库积分购买,一块钱一积分。

扫码支持

打开微信扫一扫,2两分钟内即可到账(注意:购买积分留言备注自己注册的邮箱),如有疑问请联系站长

打赏

取消

作者很不错,打赏一下

扫码支持
你的打赏,就是作者分享代码最大的动力[嘻嘻]

打开微信扫一扫,即可进行扫码打赏支持

java8 lambda表达式最全学习

  发布于
积分: 收藏
联系作者 :点击QQ图标联系作者寻求帮助,得到帮助解决问题后,记得打赏支持一下作者的辛苦劳动
     在面试和工作中,Java8的新特性是经常被问到的,而lambda表达式是Java8特性的代表,必掌握的知识,所以和大家一起学习和分享下lambda表达式的使用。
首先,介绍下lambda的演进由来,这样能更好的让读者更深刻的理解lambda。
*重要:
lambda又叫函数式接口编程,函数式接口的定义:任何一个接口,如果只包含有一个抽象的方法,则可称之为函数式接口。
Lambda的发展由来:是为了避免匿名内部类过多,代码繁琐而演化来的,下面我们通过代码的演化来一步步讲解引出lambda表达式。
例子:

//最开始我们要实现一个接口里的抽象方法:
interface Iwork{
public abstract void work();
}
//实现接口
class Work implements Iwork{ //外部类
public void work() {
System.out.println("======>I work 1<======");
}
}
//测试:
public class Lambda {
public static void main(String[] args) {
Iwork work = new Work();
work.work();
}
}
优化:因为Iwork接口的work方法只被实例化一次,后来就考虑,能不能把实现这个接口的类改成静态的,就出现了静态内部类,如下:
interface Iwork{
public abstract void work();
}

public class Lambda {
static class Work2 implements Iwork{ //静态内部类
public void work() {
System.out.println("======>I work 2<======");
}
}
public static void main(String[] args) {
work = new Work2();
work.work();
}
}
再一步优化,实现改成局部内部类
interface Iwork{
public abstract void work();
}

public class Lambda {
public static void main(String[] args) {
class Work3 implements Iwork{ //局部内部类
public void work() {
System.out.println("======>I work 3<======");
}
}
work = new Work3();
work.work();
}
}
再优化,实现改成匿名内部类
interface Iwork{
public abstract void work();
}

public class Lambda {
public static void main(String[] args) {
work=new Iwork() { //匿名内部类
public void work() {
System.out.println("======>I work 4<======");
}
};
work.work();
}
}
通过减少匿名内部类的实现,我们java8出现了lambda表达式的使用
interface Iwork{
public abstract void work();
}

public class Lambda {
//lambda 表达式
work=()->{
System.out.println("======>I work lambda<======");
};
work.work();
}
}
总结:我们可以得出lambda演进的一个过程:
演化历程:外部类->静态内部类->局部内部类->匿名内部类->lamda表达式
欢迎大家关注我的订阅号(阿金学java)一起学习


提交评论
本月评论榜
本月下载榜
本月收藏榜